Перевод.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(*~\Глагол\Отделы\Иное~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                        ОТДЕЛ Перевод;
(*============================================================================*)
(* НАЗНАЧЕНИЕ: перевод русских букв в латинские                               *) 
(*============================================================================*)

(* Соответствие русских букв и латинских буквосочетаний:
А - A    К - K    Х - H
Б - B    Л - L    Ц - C 
В - V    М - M    Ч - CH
Г - G    Н - N    Ш - SH
Д - D    О - O    Щ - SC
Е - JE   П - P    Ъ - O
Ё - JO   Р - R    Ы - Y
Ж - X    С - S    Ь - E
З - Z    Т - T    Э - E
И - I    У - U    Ю - JU
Й - J    Ф - F    Я - JA *)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА ВЛат-(рус-,лат+:ЦЕПЬ);
ПЕР
  р,л:ЗНАК; (* русская и латинская буквы *)
  рп,лп:ЦЕЛ;(* позиция русской и латинской буквы *)
  рд,лд:ЦЕЛ;(* обрабатываемая длина цепочек *)
УКАЗ
  рд:=ДЛИНА(рус);
  лд:=РАЗМЕР(лат)-2; (* запас для 0X и последней второй буквы *)
  рп:=0;
  лп:=0;
   ПОКА (рп < рд) И (лп < лд) ВЫП
    (* получить первую букву *)
    р:=рус[рп];
    ВЫБРАТЬ р ИЗ
    | "а":л:="a"
    | "б":л:="b"
    | "в":л:="v"
    | "г":л:="g"
    | "д":л:="d"
    | "е":л:="j"
    | "ё":л:="j"
    | "ж":л:="x"
    | "з":л:="z"
    | "и":л:="i"
    | "й":л:="j"
    | "к":л:="k"
    | "л":л:="l"
    | "м":л:="m"
    | "н":л:="n"
    | "о":л:="o"
    | "п":л:="p"
    | "р":л:="r"
    | "с":л:="s"
    | "т":л:="t"
    | "у":л:="u"
    | "ф":л:="f"
    | "х":л:="h"
    | "ц":л:="c"
    | "ч":л:="c"
    | "ш":л:="s"
    | "щ":л:="s"
    | "ъ":л:="o"
    | "ы":л:="y"
    | "ь":л:="e"
    | "э":л:="e"
    | "ю":л:="j"
    | "я":л:="j"
    | "А":л:="A"
    | "Б":л:="B"
    | "В":л:="V"
    | "Г":л:="G"
    | "Д":л:="D"
    | "Е":л:="J"
    | "Ё":л:="J"
    | "Ж":л:="X"
    | "З":л:="Z"
    | "И":л:="I"
    | "Й":л:="J"
    | "К":л:="K"
    | "Л":л:="L"
    | "М":л:="M"
    | "Н":л:="N"
    | "О":л:="O"
    | "П":л:="P"
    | "Р":л:="R"
    | "С":л:="S"
    | "Т":л:="T"
    | "У":л:="U"
    | "Ф":л:="F"
    | "Х":л:="H"
    | "Ц":л:="C"
    | "Ч":л:="C"
    | "Ш":л:="S"
    | "Щ":л:="S"
    | "Ъ":л:="O"
    | "Ы":л:="Y"
    | "Ь":л:="E"
    | "Э":л:="E"
    | "Ю":л:="J"
    | "Я":л:="J"
    ИНАЧЕ 
      л:=р
    КОН;
    лат[лп]:=л;
    (* добавить вторую букву *)
    УВЕЛИЧИТЬ(лп);
    ВЫБРАТЬ р ИЗ
    | "Е":л:="E"
    | "Ё":л:="O"
    | "Ч":л:="H"
    | "Ш":л:="H"
    | "Щ":л:="C"
    | "Ю":л:="U"
    | "Я":л:="A"
    | "е":л:="e"
    | "ё":л:="o"
    | "ч":л:="h"
    | "ш":л:="h"
    | "щ":л:="c"
    | "ю":л:="u"
    | "я":л:="a"
    ИНАЧЕ 
      УМЕНЬШИТЬ(лп) (* вторая буква не нужна *)
    КОН;
    лат[лп]:=л;
    УВЕЛИЧИТЬ(лп);
    УВЕЛИЧИТЬ(рп)
  КОН;
  лат[лп]:=0X
КОН ВЛат;

КОН Перевод.

 
 


Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com

 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы